perm filename OUTPUT.SAI[PNT,HE]3 blob
sn#367359 filedate 1978-07-14 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 ENTRY
C00006 ENDMK
C⊗;
ENTRY;
BEGIN "OUTPUT"
DEFINE $OUTPUT=TRUE;
REQUIRE "HEADER.SAI" SOURCE_FILE;
! display: cvgx,str_rt,str_vt.str_tr;
! eliminates all the blanks characters in the string (to reduce
the space when displayed);
INTERNAL SIMPLE STRING PROCEDURE CVGX(REAL R);
BEGIN
STRING S1,S2;
S1←CVF(R); ! USED TO BE CVG(R);
S2←SCAN(S1,$BSKTAB,$BRCHR); ! to cancel the spaces;
RETURN(S2);
END;
! returns a string with the rotation part;
INTERNAL
STRING PROCEDURE STR_RT(REAL ARRAY XF;INTEGER NUM(1));
! num=1 for file,=4 for display;
BEGIN
REAL W,PH,TH;
STRING RS,SCA;
STRING PROCEDURE ROTFORM(STRING AXIS;REAL W);
IF NUM=1
THEN RETURN("ROT("[NUM TO ∞]&AXIS[1 TO 5-NUM]&","&CVGX(W)
&"*DEG)")
ELSE RETURN("ROT("[NUM TO ∞]&AXIS[1 TO 5-NUM]&","&CVGX(W)&")");
EULERO(XF,W,PH,TH);
RS←NULL;SCA←NULL;
IF NUM=1 THEN SETFORMAT(0,1); ! USED TO BE (0,5);
IF ABS(TH)>$EPS THEN
BEGIN
RS←RS&ROTFORM("ZHAT",TH);
SCA←"*";
END;
IF ABS(PH)>$EPS THEN
BEGIN
RS←RS&SCA&ROTFORM("YHAT",PH);
SCA←"*";
END;
IF ABS(W)>$EPS THEN
BEGIN
RS←RS&SCA&ROTFORM("ZHAT",W);
SCA←"*";
END;
IF LENGTH(SCA)=0 THEN
RS←RS&"NILROTN";
SETFORMAT(0,3);
RETURN(RS);
END;
! returns a string with the vector part for frame assignments;
INTERNAL SIMPLE STRING PROCEDURE STR_VT(REAL X,Y,Z;INTEGER NUM(1));
BEGIN ! num=1 for file,=8 for display;
STRING VECTOR,INCH;
IF ABS(X)<$EPS AND ABS(Y)<$EPS AND ABS(Z)<$EPS
THEN RETURN(IF NUM=1 THEN "NILVECT*INCHES" ELSE "NILVECT")
ELSE RETURN(" VECTOR("[NUM TO ∞]&CVGX(X)&","&CVGX(Y)&","&CVGX(Z)
&")*INCHES"[1 TO 9-NUM]);
END;
! returns the trans part for the frame, whose values are in XF;
INTERNAL SIMPLE STRING PROCEDURE STR_TR(REAL ARRAY XF;INTEGER ROT(1),VECT(1));
BEGIN
! rot=1,vect=1 for file,rot=4,vect=8 for display;
REAL W,PH,TH,X,Y,Z; STRING RTPART,VTPART;
RTPART←STR_RT(XF,ROT);
X←XF[1,4];Y←XF[2,4];Z←XF[3,4];
VTPART←STR_VT(X,Y,Z,VECT);
IF ROT=1 THEN RETURN(" ("&RTPART&","&VTPART&")")
ELSE RETURN(" ("&RTPART&","&VTPART&")");
END;
END "OUTPUT"